prevent segfault in case the backend or frontend kinds have
not been set to a correct kind value (or not initilized).
Signed-off-by: Vincent Hanquez <vincent.hanquez@eu.citrix.com>
#include "libxl.h"
#include "libxl_internal.h"
-const char *string_of_kinds[] = {
+static const char *string_of_kinds[] = {
[DEVICE_VIF] = "vif",
[DEVICE_VBD] = "vbd",
[DEVICE_TAP] = "tap",
struct xs_permissions backend_perms[2];
struct xs_permissions hotplug_perms[1];
+ if (!is_valid_device_kind(device->backend_kind) || !is_valid_device_kind(device->kind))
+ return ERROR_INVAL;
+
dom_path_backend = libxl_xs_get_dompath(ctx, device->backend_domid);
dom_path = libxl_xs_get_dompath(ctx, device->domid);
DEVICE_CONSOLE,
} libxl_device_kinds;
-extern const char *string_of_kinds[];
+#define is_valid_device_kind(kind) (((kind) >= DEVICE_VIF) && ((kind) <= DEVICE_CONSOLE))
typedef struct {
uint32_t backend_devid;